home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
utilities
/
pu022.dms
/
pu022.adf
/
Source
/
Source.LZH
/
_main.c
next >
Wrap
C/C++ Source or Header
|
1991-04-22
|
1KB
|
61 lines
/* ------------------------------------------ */
/* These are my modified startup routines */
/* ------------------------------------------ */
#include <exec/types.h>
#include <stdio.h>
#define MAXARG 32
#define QUOTE '"'
VOID _main(line)
register char *line;
{
int argc = 0; /* arg count */
char *argv[MAXARG]; /* arg pointers */
argc = ParseCommands(0, line, argv);
if(argc > MAXARG)
XCEXIT(1);
main(argc, argv);
XCEXIT(0);
}
/* I have separated this to own routine, because I also use this to parse
redirection file.
*/
int ParseCommands(int Start, register char *line, char *args[])
{
register char **pargv;
int argc;
argc = Start;
while (argc < MAXARG)
{
while (isspace(*line)) line++;
if (*line == '\0') break;
pargv = &args[argc++];
if (*line == QUOTE)
{
*pargv = ++line; /* ptr inside quoted string */
while ((*line != '\0') && (*line != QUOTE)) line++;
if (*line == '\0') {
return(MAXARG+1);
}
else *line++ = '\0'; /* terminate arg */
}
else /* non-quoted arg */
{
*pargv = line;
while ((*line != '\0') && (!isspace(*line))) line++;
if (*line == '\0') break;
else *line++ = '\0'; /* terminate arg */
}
} /* while */
return(argc);
}